package com.bookrecomm.service;

import com.bookrecomm.vo.BookVO;
import com.bookrecomm.vo.PageVO;
import org.springframework.data.domain.Pageable;

/**
 * 收藏服务接口
 * 定义收藏相关的业务逻辑方法
 */
public interface FavoriteService {

    /**
     * 添加收藏
     * @param userId 用户ID
     * @param bookId 图书ID
     * @return 是否添加成功
     */
    boolean addFavorite(Long userId, Long bookId);

    /**
     * 取消收藏
     * @param userId 用户ID
     * @param bookId 图书ID
     * @return 是否取消成功
     */
    boolean removeFavorite(Long userId, Long bookId);

    /**
     * 检查是否已收藏
     * @param userId 用户ID
     * @param bookId 图书ID
     * @return 是否已收藏
     */
    boolean isFavorite(Long userId, Long bookId);

    /**
     * 获取用户收藏的图书列表
     * @param userId 用户ID
     * @param pageable 分页参数
     * @return 分页图书列表
     */
    PageVO<BookVO> getUserFavorites(Long userId, Pageable pageable);

    /**
     * 获取用户收藏数量
     * @param userId 用户ID
     * @return 收藏数量
     */
    Long countUserFavorites(Long userId);

    /**
     * 获取图书被收藏数量
     * @param bookId 图书ID
     * @return 被收藏数量
     */
    Long countBookFavorites(Long bookId);
}
